package com.wyt.controller;


import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wyt.dao.BookMapper;
import com.wyt.entity.Book;
import com.wyt.entity.Book3;
import com.wyt.until.CommonResult;
import com.wyt.until.PageEntity;
import com.wyt.until.TableLayui;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;

/**
 * @author AAA
 * @date 2021/10/29 18:42("/tee
 */
@Controller
@RequestMapping("book")
public class BookController {
    @Autowired
    private BookMapper bookMapper;

//    查询、检索
    @ResponseBody
    @RequestMapping("/selectTeacher")
    public TableLayui selectBook(PageEntity pageEntity,@RequestParam Map map) {
        PageHelper.startPage(pageEntity.getPage(), pageEntity.getLimit());

        List<Map> list= bookMapper.selectBook(map);
        PageInfo pageInfo=new PageInfo(list);

        return new TableLayui(pageInfo.getTotal(),pageInfo.getList());
    }
//    增加  修改
    @ResponseBody
    @RequestMapping("/insertTeacher")
    public CommonResult insertBook1(Book3 book){
        System.out.println("1654654564654654"+book);
        if (book.getBookid()!= null){ //&&与
            int i=bookMapper.updateBooks(book);
            if (i>0) {
                return new CommonResult(200, "成功", null);
            }else {
                return new CommonResult(500,"失败",null);
            }
        }else {
            int i = bookMapper.insertBook(book);
            if (i > 0) {
                return new CommonResult(200, "成功", null);
            } else {
                return new CommonResult(500, "失败", null);
            }
        }
    }

    @ResponseBody
    @RequestMapping(value = "/updateTeacher")
    public TableLayui updateBook(@RequestParam Map map){
        bookMapper.updateBook(map);
        return new TableLayui(1,"失败",map);
    }

//    没有sql语句
//    @ResponseBody
//    @RequestMapping("/selectid")
//    public Map selectBookid(@RequestParam String bookid){
//        return bookMapper.selectBookid(bookid);
//    }
//    删除
    @ResponseBody
    @RequestMapping("/deleteTeacher")
    public TableLayui deleteBokk(@RequestParam Map map){
        bookMapper.deleteBokk(map);
        return new TableLayui(1,"失败");
    }

//    @ResponseBody
//    @RequestMapping( "upload")
//    public CommonResult upload (MultipartFile test1) {
        //System.out.println(book);
        //System.out.println(book);
        //System.out.println(book);
//        System.out.println("================================");
//        System.out.println(test1);
//        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
//        String endpoint = "oss-cn-beijing.aliyuncs.com";
//        // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
//        String accessKeyId = "LTAI5tGWKfR3pYjjVV2pNkJ8";
//        String accessKeySecret = "SJVdR1vMp8uWb6jmWdDi8rZ4vzqenz";
//
//        // 创建OSSClient实例。
//        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//
//        // 填写本地文件的完整路径。如果未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件流。
//        InputStream inputStream = null;
//        try {
//            inputStream = test1.getInputStream();
//        } catch (IOException e) {
//            e.printStackTrace();
//        return new CommonResult(500,"上传失败",null);
//        }
//        // 依次填写Bucket名称（例如examplebucket）和Object完整路径（例如exampledir/exampleobject.txt）。Object完整路径中不能包含Bucket名称。
//        String fileName = UUID.randomUUID().toString() + test1.getOriginalFilename();
//        java.sql.Date reDate = new Date(System.currentTimeMillis());
//        ossClient.putObject("wyc-bucket-oss", reDate+"/"+fileName, inputStream);
//
//        // 关闭OSSClient。
//        ossClient.shutdown();
//        //https://wyc-bucket-oss.oss-cn-beijing.aliyuncs.com/1.jpg
//        CommonResult commonResult = new CommonResult(200, "上传成功", "https://vwywv." + endpoint + "/" + reDate + "/" + fileName);
//        return commonResult;
//    }
//    }
//    row = bookMapper.insertBook(book);
//} else {
//
//        row = bookMapper.updateByPrimaryKey(book);
//        }
//        CommonResult result;
//        if (row > 0) {
//        result = new CommonResult(200, "操作成功", null);
//        } else {
//        result = new CommonResult(500, "操作失败", null);
//        }

    /**
     * 阿里云上传
     * @param test1
     * @return
     */
    @ResponseBody
    @RequestMapping("upload")
    public CommonResult ossload(MultipartFile test1){
        try{
    // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
            String endpoint = "oss-cn-qingdao.aliyuncs.com";
            //LTAI4FztLSw7TLSwja9R5rMn
            //CCVjhIOsl0mFjwc42i3CMpqYfdRpID
    // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
            String accessKeyId = "LTAI5tCLSyTX3pshc1AxqPZM";
            String accessKeySecret = "xVXqhdW0UrXfqg9PT9iwpJZPMvBz7g";
    // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

    // 填写本地文件的完整路径。如果未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件流。
            InputStream inputStream = null;
            inputStream = test1.getInputStream();

            String filename = UUID.randomUUID().toString() + test1.getOriginalFilename();
    // 依次填写Bucket名称（例如examplebucket）和Object完整路径（例如exampledir/exampleobject.txt）。Object完整路径中不能包含Bucket名称。
            java.sql.Date reDate = new Date(System.currentTimeMillis());
            System.out.println(reDate);
            ossClient.putObject("wyt-bucket",reDate+"/"+filename,inputStream);

    // 关闭OSSClient。
            ossClient.shutdown();
            CommonResult commonResult = new CommonResult(200, "上传成功", "https://wyt-bucket." + endpoint + "/" + reDate + "/" + filename);
            //TODO 把user对象保存到数据库表中
            System.out.println(commonResult);
            return commonResult;
        }catch (Exception e){
            return new CommonResult(500,"上传失败",null);
        }
    }
}
